#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version        : 1.0
# @Creaet Time    : 2021/10/18 22:18 
# @File           : crud.py
# @IDE            : PyCharm
# @desc           : 数据库 增删改查操作


from sqlalchemy.orm import Session
from . import models, schemas


def get_user(db: Session, user_id: int):
    """根据用户 ID 查询用户"""
    return db.query(models.User).filter(models.User.id == user_id).first()


def get_user_by_email(db: Session, email: str):
    """根据用户邮箱查询用户"""
    return db.query(models.User).filter(models.User.email == email).first()


def get_users(db: Session, skip: int = 0, limit: int = 100):
    """获取用户列表"""
    return db.query(models.User).offset(skip).limit(limit).all()


def create_user(db: Session, user: schemas.UserCreate):
    """创建用户"""
    user.password = user.password + "notreallyhashed"
    db_user = models.User(**user.dict())
    db.add(db_user)      # 将实例对象添加到数据库会话中。
    db.commit()          # 将更改提交到数据库（以便将其保存）。
    db.refresh(db_user)  # 刷新实例（以便它包含数据库中的任何新数据，例如生成的 ID）。
    return db_user


def get_items(db: Session, skip: int = 0, limit: int = 100):
    """获取项目列表"""
    return db.query(models.Item).offset(skip).limit(limit).all()


def create_user_item(db: Session, item: schemas.ItemCreate, user_id: int):
    """创建项目"""
    db_item = models.Item(**item.dict(), owner_id=user_id)
    db.add(db_item)
    db.commit()
    db.refresh(db_item)
    return db_item


"""
提示：
通过创建独立于您的路径操作函数的仅专用于与数据库交互（获取用户或项目）的函数，您可以更轻松地在多个部分中重用它们，并为它们添加单元测试。
"""